package com.xhapi.controller;


import com.xhapi.pojo.dto.ScoreAvgBySubject;
import com.xhapi.pojo.dto.StudentOnePaperDTO;
import com.xhapi.pojo.dto.StudentSubjectDTO;
import com.xhapi.pojo.entity.ApiResult;
import com.xhapi.pojo.entity.ErrorQuestion;
import com.xhapi.pojo.entity.Score;
import com.xhapi.service.AskService;
import com.xhapi.service.IErrorQuestionService;
import com.xhapi.service.ScoreService;
import com.xhapi.utils.ApiResultHandler;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 错题信息表 前端控制器
 * </p>
 *
 * @author author
 * @since 2024-05-02
 */
@RestController
@CrossOrigin
@RequestMapping("/error-question")
@RequiredArgsConstructor
@Slf4j
public class ErrorQuestionController {
    private final IErrorQuestionService errorQuestionService;
    private final ScoreService scoreService;
    private final AskService askService;

    /*
    * 保存错题信息
    * */
    @PostMapping
    public ApiResult getErrorQuestion(@RequestBody ErrorQuestion errorQuestion){
        errorQuestionService.save(errorQuestion);
        return ApiResultHandler.success();
    }

    /*
    * 分析科目的问题 要求获取学生id以及科目subject
    * */
    @GetMapping("/whole")
    public ApiResult analysisStudent(@RequestBody StudentSubjectDTO studentSubjectDTO){
        log.info("{}",studentSubjectDTO);
        List<Score> score = scoreService.findById(studentSubjectDTO.getStudentId());
        List<ScoreAvgBySubject> allMsg = scoreService.selectAvg(studentSubjectDTO.getSubject());

        String msg= errorQuestionService.arrange(score,allMsg);
        log.info(msg);
        // 我的成绩是{计算机网络=70},整体成绩为{计算机网络=47.2222}
        // 这里获得的msg通过询问星火得知自己的成绩，allMsg为所有人平均成绩，由AI分析得到结果
        String s = askService.sendQuestion(msg + "，请你为我的分数做出一个评价，请不要指明具体分数，并且告诉我一些你认为我需要掌握的计算机网络知识点");
        return ApiResultHandler.success(s);
    }

    /*
    * 分析试卷的问题 要求获取学生id 科目subject 考试编号examCode
    * */
    @GetMapping("/paper")
    public ApiResult analysisPaper(@RequestBody StudentOnePaperDTO studentOnePaperDTO){
        // 获取了这张试卷的具体错题
        String errorPaper = errorQuestionService.getErrorPaper(studentOnePaperDTO);

        // todo 这里获得的errorPaper向星火询问得到一些解析和建议

        return ApiResultHandler.success();
    }
}
